#include <logbase.h>
#define STRUCT_LINK_OTHER_FLAG 0
#if 0
// 这个会出现A定义B，B有要定义A，无线循环。有问题。
struct typeB_0;
struct typeA_0
{
    struct typeB_0 v2; // 这里需要完整的结构体定义， 否则报错。
};
struct typeB_0
{
    struct typeA_0 v1;
};
#endif
// 耦合问题，如果结构体相互包含，一般用指针。
struct typeB_1;
struct typeA_1
{
    struct typeB_1 *v2;
};
struct typeB_1
{
    struct typeA_1 *v1;
};

// 这样也可以
struct typeB_2;
typedef struct
{
    struct typeB_2 *v2;
} typeA_2;
struct typeB_2
{
    typeA_2 *v1;
};

// 这样也可以
struct typeB_5;
typedef struct
{
    struct typeB_5 *v2;
} typeA_5;
struct typeB_5
{
    typeA_5 *v1;
} typeB_5;

#if 0
// 无法定义。
typeB_3;
typedef struct
{
    typeB_3 *v2;
} typeA_3;
typedef struct
{
    typeA_3 *v1;
} typeB_3;
#endif
typedef struct
{
    void *v2;
} typeA_4;
typedef struct
{
    typeA_4 *v1;
} typeB_4;
int main(int argc, char **argv)
{
    return 1;
}

// [2023-12-12 14:52:15.586][dbg][cstruct2.c,30]a=1,b=5,c=12,value=0x629
// [2023-12-12 14:52:15.748][dbg][cstruct2.c,33]a=3,b=6,c=4,value=0x2233
// 0x629 = 0B011000101001--->0B01100 0101 001 分别是12，5，1
// 0x2233 = 0B10001000110011--->0B10 00100 0110 011 分别是4， 6， 3
